package springmvc.param.controller;

import springmvc.param.pojo.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * description: 04
 * TODO：接收POST请求体中的JSON数据
 *
 * 1. 在Postman中测试，发送POST请求，请求体选择raw json格式
 * 2. 方法形参使用 实体类 接值，用 @RequestBody 修饰形参，接收JSON格式请求体
 * 3. 问题：Java原生的API，只支持路径参数和param参数，不支持JSON格式，会报错 415 不支持数据类型
 * 4. 原因：JSON 是 JavaScript Object Notation 前端数据交换格式
 * 5. 解决：导入jackson-databind依赖，在配置类中添加注解@EnableWebMVC，添加JSON格式解析能力
 */

@RequestMapping("json")
@Controller
@ResponseBody
public class JsonController {

    // http://localhost:8080/json/data
    @PostMapping("data")
    public String data(@RequestBody Person person){
        System.out.println("person = " + person);
        return person.toString();
        // Person(name=xfanonymous, age=18, gender=boy)
    }

    @PostMapping("data1")
    public Person data1(@RequestBody Person person){
        System.out.println("person = " + person);
        return person;
    }
}
